package cn.itcast.test;

public class IntegerDemo {
    public static void main(String[] args) {
        Integer a = new Integer(10);
        Integer b = new Integer(10);
        System.out.println(a==b);//false
        Integer c = new Integer(10);
        Integer e = 10;Integer f = 10;int d = 10;
        System.out.println(e==f);//true
        System.out.println(c==d);//true
        System.out.println(c==f);//false
        int m =129;Integer n =129;Integer i = 129;
        System.out.println(m==n);//true
        System.out.println(n==i);//false
        /* Integer e =10; 等同于 Integer e = Integer.valueOf(10);（装箱）
        而ValueOf方法的源码中会对-128到127之间的数进行一个缓存。
        下次再写Integet x = 10；时就会从缓存中取
        拆箱 intValue（）
        int和Integer两者比较的时候Integer会自动拆箱成int类型来比较
        */

        String s1 = "string";
        String s2 = "string";
        String s3 = new String("string");
        String s4 = new String("string");
        System.out.println(s1==s2);//true
        System.out.println(s2==s3);//false
        System.out.println(s3==s4);//false
        String s5 = "a";
        String s6 = "b";
        String s7 = "ab";
        String s8 = s5+s6;
        String s9 = "a" + "b";
        System.out.println("new:");
        System.out.println(s7==s8);
        System.out.println(s7==s9);
        System.out.println(s8==s9);

    }
    /*
    * == 对于基本数据类型比较的是值 对于引用类型比较的是地址值
    * equals 对于没有重写的类的对象的比较是比较对象的地址值 对于重写了的类的对象比较的是值
    * */


}
